#ifndef FONTE_H
#define FONTE_H

#include <string>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>

using namespace std;


/*
    Esse namespace engloba funcoes para facilitar o uso das fontes no jogo.
    Ele carrega as fontes e as guarda num Map, e depois a fonte pode ser
    acessada atraves do proprio map, de qualquer lugar do programa
*/
namespace Fonte {
	// DefaultFont - A fonte padrao, caso nenhuma seja setada
	//  Depois de carregar todas as fontes, se quiser sete essa fonte
	extern std::string DefaultFont;

	bool Inicializa();
	void Finaliza();

	// LoadFont - Carrega a fonte pra memoria
	//  Key - Chave de referencia pro mapa de fontes
	//  Filename - Caminho pro arquivo da fonte
	//  FontSize - Tamanho da fonte
	// Exemplo:  LoadFont("bigfont","arial.ttf",72)
	bool Carregar(std::string key, std::string filename, int fontSize=16);

	// CloseFont - Fechar uma fonte.
	void Fechar(std::string key);

	// FontHeight - Retorna a altura da fonte
	int Altura(std::string key);

	// Print - Imprime o texto na tela
	//  x, y - Local pra imprimir
	//  texto - Texto pra escrever
	//  r, g, b - Cor da fonte
	//  hAlignment - 0=left, 1=center, 2=right
	//  vAlignment - 0=top, 1=center, 2=bottom
	//  chave - Chave da fonte a ser usada
	// Exemplo: Print(40, 40, "Hi", 255,0,0, 1, 1, "bigfont"
	bool Print(int x = 0, int y = 0, std::string texto = "Hello World",
                int r = 255, int g = 255, int b = 255,
                int halign = 0, int valign = 0,
                std::string chave = "default", SDL_Surface *tela = NULL);


    bool Print(int x = 0, int y = 0, char *texto = "Hello World",
                int r = 255, int g = 255, int b = 255,
                int halign = 0, int valign = 0,
                std::string chave = "default", SDL_Surface *tela = NULL);
}

#endif // _TEXT_H_INCLUDED_
